home *** CD-ROM | disk | FTP | other *** search
- PROGRAM FastDog(input,output,picfile);
-
- { Copyright (c) 1987, Ciarcia's Circuit Cellar }
- { All Rights Reserved }
-
- {$U- control-break checking during execution }
- {$C- control-break checking during I/O operations }
- {$R- array range checking }
-
- {$Ideclares.p declarations }
- {$Ihexutil.p hex utilities }
- {$Iserial.p serial interface code }
- {$Ipictures.p picture file code }
- {$Iimages.p image processing }
-
- CONST
- BEL = $07; { bell character }
- manual = FALSE; { true for relay box }
-
- VAR
- level : INTEGER; { delta threshold }
- changes : REAL; { # changed threshold }
- npels : REAL; { # actually changed }
- valerror : INTEGER; { error code from Val }
- picswap : picptr; { used to swap buffers }
-
- BEGIN
-
- LowVideo;
-
- IF ParamStr(1) = '' { extract delta thresh }
- THEN BEGIN
- Write('Threshold (0-63): ');
- Readln(level);
- IF level > 63
- THEN level := 63;
- IF level < 0
- THEN level := 0;
- valerror := 0;
- END
- ELSE Val(ParamStr(1),level,valerror);
-
- IF valerror <> 0
- THEN BEGIN
- Writeln('Threshold must be numeric: ',ParamStr(1));
- Halt;
- END;
-
- IF ParamStr(2) = '' { extract # changes thr }
- THEN BEGIN
- Write('# Changes (0-62464): ');
- Readln(changes);
- IF changes > 62464.0
- THEN changes := 62464.0;
- IF changes < 0.0
- THEN changes := 0.0;
- valerror := 0;
- END
- ELSE Val(ParamStr(2),changes,valerror);
-
- IF valerror <> 0
- THEN BEGIN
- Writeln('# Changes must be numeric: ',ParamStr(2));
- Halt;
- END;
-
- IF manual
- THEN BEGIN
- Writeln('Make sure the transmitter is connected ' +
- 'to the serial port!');
- Write('Press Enter when ready: ');
- Readln;
- END;
-
- ComOn(bitsec); { set up serial port }
-
- pic0 := NIL; { get working buffer }
- PicSetup(pic0);
-
- pic1 := NIL; { get ref pic buffer }
- PicSetup(pic1);
-
- pic2 := NIL; { get test pic buffer }
- PicSetup(pic2);
-
- pic3 := NIL; { get changes buffer }
- PicSetup(pic3);
- SetSyncs(pic3); { ... and add controls }
-
- Writeln('Loading reference picture...');
- GetPicture(pic0,fullres); { grab reference image }
- Expand(pic0,pic1);
-
- REPEAT
-
- Writeln('Loading test picture...');
- GetPicture(pic0,fullres); { grab test picture }
- IF NOT manual
- THEN BEGIN
- Writeln(' displaying');
- SendPicture(pic0); { show if relay box on }
- END;
-
- Writeln(' expanding');
- Expand(pic0,pic2);
-
- Writeln('Comparing test with reference...');
- Compare(pic1,pic2,pic3); { find changes }
-
- Write('Counting differences... ');
- npels := CountPels(pic3,level);
- Writeln(npels:8:0,' pels >= ',level,' brightness');
-
- IF npels >= changes
- THEN BEGIN
- Writeln('**** Intruder detected!!! ',Chr(BEL));
- IF manual
- THEN BEGIN
- Writeln('Switch cables to show image');
- Write('Press Enter when ready: ');
- Readln;
- SendPicture(pic0);
- Halt;
- END
- ELSE BEGIN
- Writeln('Showing differences');
- SendPicture(pic3);
- END;
- END
- ELSE Writeln('---- No intruder so far');
-
- Writeln('Resetting reference picture...');
- picswap := pic1; { set ref = test }
- pic1 := pic2;
- pic2 := picswap; { will be overwritten }
-
- UNTIL KeyPressed;
-
- END.